home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / UTILITIE / CONVERSI / H400.ZIP / ZSIM22.ZIP / ZBIOS.INC < prev    next >
Text File  |  1993-06-15  |  7KB  |  301 lines

  1.  
  2. HARD_DISC_TOO EQU -1
  3.  
  4. ; Macro um aus der Z80 Emulation Biosroutinen aufzurufen, => V20
  5.  
  6. calln  macro  nr
  7.        db 0edh,0edh
  8.        db nr
  9. endm
  10.  
  11. ; Macros fuer Z80 Sprunganweisungen, die TASM nicht kennt
  12.  
  13. z80jp  macro  labl
  14.        db 0c3h
  15.        dw offset labl
  16. endm
  17.  
  18. z80ret macro
  19.        db 0c9h
  20. endm
  21.  
  22. ; naechste Zeilen orginal aus DR's CBIOS.ASM
  23.  
  24. ;
  25. MSIZE  equ    20     ;cp/m version memory size in kilobytes
  26. ;
  27. ;  "BIAS" is address offset from 3400h for memory systems
  28. ;  than 16k (referred to as "b" throughout the text).
  29. ;
  30. BIAS   equ    (MSIZE-20)*1024
  31.  
  32.  
  33. IOBYTE equ 3  ;intel i/o byte
  34. CDISK  equ 4  ;current disk number 0=a,...,15=p
  35.  
  36.  
  37. ;       org    bios   ;origin of this program
  38.  
  39. zbiosbeg equ this byte                 ; start of z80 bios
  40.  
  41. ;  jump vector fuer einzelne Ups
  42.        z80jp    zboot+ZBIOSDISPL   ;cold start
  43. wboote equ this byte
  44.        z80jp    zwboot+ZBIOSDISPL  ;warm start
  45.        z80jp    zconst+ZBIOSDISPL  ;console status
  46.        z80jp    zconin+ZBIOSDISPL  ;console character in
  47.        z80jp    zconout+ZBIOSDISPL ;console character out
  48.        z80jp    zlist+ZBIOSDISPL   ;list character out
  49.        z80jp    zpunch+ZBIOSDISPL  ;punch character out
  50.        z80jp    zreader+ZBIOSDISPL ;reader character out
  51.        z80jp    zhome+ZBIOSDISPL   ;move head to home position
  52.        z80jp    zseldsk+ZBIOSDISPL ;select disk
  53.        z80jp    zsettrk+ZBIOSDISPL ;set track number
  54.        z80jp    zsetsec+ZBIOSDISPL ;set sector number
  55.        z80jp    zsetdma+ZBIOSDISPL ;set dma address
  56.        z80jp    zread+ZBIOSDISPL   ;read disk
  57.        z80jp    zwrite+ZBIOSDISPL  ;write disk
  58.        z80jp    zlistst+ZBIOSDISPL ;return list status
  59.        z80jp    zsectran+ZBIOSDISPL       ;sector translate
  60.        rept 25-16-1
  61.          z80jp    zwboot+ZBIOSDISPL
  62.        endm
  63.        z80jp    zmove+ZBIOSDISPL
  64.        z80jp    ztime+ZBIOSDISPL
  65.        rept 30-26-1
  66.          z80jp    zwboot+ZBIOSDISPL
  67.        endm
  68.        z80jp    zuser+ZBIOSDISPL
  69. zvecend equ this byte
  70.  
  71. zboot  equ this byte
  72.        calln 0
  73.        z80ret
  74. zwboot equ this byte
  75.         calln 1
  76.        db 31h,80h,00h    ; ld sp,80h
  77.        z80ret
  78. zconst equ this byte
  79.        calln 2
  80.        z80ret
  81. zconin equ this byte
  82.        calln 3
  83.        z80ret
  84. zconout equ this byte
  85.        calln 4
  86.        z80ret
  87. zlist  equ this byte
  88.        calln 5
  89.        z80ret
  90. zpunch equ this byte
  91.        calln 6
  92.        z80ret
  93. zreader equ this byte
  94.        calln 7
  95.        z80ret
  96. zhome   equ this byte
  97.        calln 8
  98.        z80ret
  99. zseldsk equ this byte
  100.        calln 9
  101.        z80ret
  102. zsettrk equ this byte
  103.        calln 10
  104.        z80ret
  105. zsetsec equ this byte
  106.        calln 11
  107.        z80ret
  108. zsetdma equ this byte
  109.        calln 12
  110.        z80ret
  111. zread   equ this byte
  112.        calln 13
  113.        z80ret
  114. zwrite  equ this byte
  115.        calln 14
  116.        z80ret
  117. zlistst equ this byte
  118.        calln 15
  119.        z80ret
  120. zsectran equ this byte
  121.        calln 16
  122.        z80ret
  123. zmove equ this byte     ; number as in cp/m plus
  124.        calln 25
  125.        z80ret
  126. ztime equ this byte     ; number as in cp/m plus
  127.        calln 26
  128.        z80ret
  129. zuser equ this byte     ; number as in cp/m plus
  130.        calln 30
  131.        z80ret
  132.  
  133. LAST_TRCK0 equ 39  ; track = 0..39
  134. LAST_SEC0  equ 35  ; sektor = 0..35
  135.  
  136. LAST_SEC1  equ 31
  137.  
  138. XLT0       equ 0
  139. XLT1       equ 0
  140. XLT2       equ 0
  141.  
  142. ; datas cpc system format
  143.  
  144.                     ; blocksize bls=1024
  145.        SPTC equ 24h ;
  146.        BSHC equ 3   ; log2(bls/128)=3
  147.        BLMC equ 7   ; bls/128-1
  148.        EXMC equ 0   ; (bls/1024)-1
  149.        DSMC equ 168 ; disksize-1
  150.        DRMC equ 63  ; direntrys-1
  151.        AL0C equ 11000000b
  152.        AL1C equ 00000000b
  153.        CKSC equ 16
  154.        OFFC equ 2
  155.  
  156.  
  157. ; datas cpc data format
  158.  
  159.                     ; blocksize bls=1024
  160.        SPTD equ 24h ;
  161.        BSHD equ 3   ; log2(bls/128)=3
  162.        BLMD equ 7   ; bls/128-1
  163.        EXMD equ 0   ; (bls/1024)-1
  164.        DSMD equ 177 ; disksize-1
  165.        DRMD equ 63  ; direntrys-1
  166.        AL0D equ 11000000b
  167.        AL1D equ 00000000b
  168.        CKSD equ 16
  169.        OFFD equ 0
  170.  
  171.  
  172. ; datas fuer CP/M 86 SS
  173.  
  174.                     ; blocksize bls=1024
  175.        SPT0 equ 32  ;
  176.        BSH0 equ 3   ; log2(bls/128)=3
  177.        BLM0 equ 7   ; bls/128-1
  178.        EXM0 equ 0   ; (bls/1024)-1
  179.        DSM0 equ 152 ; disksize-1
  180.        DRM0 equ 63  ; direntrys-1
  181.        AL00 equ 11000000b
  182.        AL10 equ 00000000b
  183.        CKS0 equ 16
  184.        OFF0 equ 1
  185.  
  186. ; datas fuer CP/M 86 DS
  187.  
  188.                     ; blocksize bls=1024
  189.        SPT1 equ 32  ;
  190.        BSH1 equ 4   ; log2(bls/128)=3
  191.        BLM1 equ 15  ; bls/128-1
  192.        EXM1 equ 1   ; (bls/1024)-1
  193.        DSM1 equ 157 ; disksize-1
  194.        DRM1 equ 63  ; direntrys-1
  195.        AL01 equ 10000000b
  196.        AL11 equ 00000000b
  197.        CKS1 equ 16
  198.        OFF1 equ 1
  199.  
  200. ;
  201. ; disc parameter data Ramdisk
  202. ;
  203.  
  204.                     ; blocksize bls=1024
  205.        SPTR equ 32   ; 4K
  206.        BSHR equ 3   ; log2(bls/128)=3
  207.        BLMR equ 7   ; bls/128-1
  208.        EXMR equ 0   ; (bls/1024)-1
  209.        DSMR equ 63  ; disksize-1
  210.        DRMR equ 31  ; direntrys+1
  211.        AL0R equ 10000000b
  212.        AL1R equ 00000000b
  213.        CKSR equ 0
  214.        OFFR equ 0
  215.  
  216. if HARD_DISC_TOO
  217. ;
  218. ; disc parameter data Harddisc
  219. ;
  220.  
  221.                     ; blocksize bls=4096
  222.        SPTH equ 128
  223.        BSHH equ 5   ; log2(bls/128)
  224.        BLMH equ 31  ; bls/128-1
  225.        EXMH equ 1   ; (bls/2048)-1
  226.        DSMH equ (HARD_DISC_SIZE SHR 2)-1
  227.        DRMH equ 1023; direntrys+1
  228.        AL0H equ 11111111b
  229.        AL1H equ 00000000b
  230.        CKSH equ 0
  231.        OFFH equ 0
  232.  
  233. endif
  234. ;
  235. ; structure fuer disc parameter headers
  236. ;
  237. dph struc
  238.     dw 0                            ; xlt
  239.     dw 0                            ; scratch pads
  240.     dw 0
  241.     dw 0
  242.     dw ?                            ; dirbuf
  243.     dw ?                            ; dpb
  244.     dw ?                            ; csv
  245.     dw ?                            ; alv
  246. dph ends
  247.  
  248. ;
  249. ; structure fuer disc parameter blocks
  250. ;
  251.  
  252. dpb   struc
  253.     spt dw ?
  254.     bsh db ?
  255.     blm db ?
  256.     exm db ?
  257.     dsm dw ?
  258.     drm dw ?
  259.     al0 db ?
  260.     al1 db ?
  261.     cks dw ?
  262.     off dw ?
  263. dpb  ends
  264.  
  265. ; drive a:
  266.  
  267. dph_base equ this byte  ; disk parameter base
  268.  
  269. dph0  dph <XLT0,0,0,0,offset dirbuf+ZBIOSDISPL,offset dpb0+ZBIOSDISPL,offset csv0+ZBIOSDISPL,offset alv0+ZBIOSDISPL>
  270. dph1  dph <XLT1,0,0,0,offset dirbuf+ZBIOSDISPL,offset dpb1+ZBIOSDISPL,0,offset alv1+ZBIOSDISPL>
  271. if HARD_DISC_TOO
  272. dph2  dph <XLT2,0,0,0,offset dirbuf+ZBIOSDISPL,offset dpb2+ZBIOSDISPL,0,offset alv2+ZBIOSDISPL>
  273. endif
  274.  
  275. dpb0  dpb <SPTC,BSHC,BLMC,EXMC,DSMC,DRMC,AL0C,AL1C,CKSC,OFFC>
  276.  
  277. dpb1  dpb <SPTR,BSHR,BLMR,EXMR,DSMR,DRMR,AL0R,AL1R,CKSR,OFFR>
  278. if HARD_DISC_TOO
  279. dpb2  dpb <SPTH,BSHH,BLMH,EXMH,DSMH,DRMH,AL0H,AL1H,CKSH,OFFH>
  280. endif
  281. dirbuf db 128 dup (?)   ; fuer alle Laufwerke gemeinsam
  282.  
  283. csv0   db (DRMC+1)/4 dup (?)
  284. alv0   db (DSMC/8)+1 dup (?)
  285.  
  286. ; csv unnecessary for non removable media
  287. alv1   db (DSMR/8)+1 dup (?)
  288.  
  289. if HARD_DISC_TOO
  290. ; csv unnecessary for non removable media
  291. alv2   db (DSMH/8)+1 dup (?)
  292. endif
  293.  
  294. @date dw (?)
  295. @hour db (?)
  296. @min  db (?)
  297. @sec  db (?)
  298.  
  299. zbiosend equ this byte
  300.  
  301.